package com.nantian.nfcm.bms.loan.entity;

/**
 * 贷款状态枚举
 * @author ljx26_000
 *
 */
public enum LoanStat {
	/**
	 * 等待上报
	 */
	WAIT("WAIT", "等待上报"),
	/**
	 * 已上报等待分配
	 */
	SUBMIT("SUBMIT", "已上报等待资料抵达联社"),
	/**
	 * 已待分配，等待审查
	 */
	ASSIGNED("ASSIGNED", "已分配独立审查人，等待审查"),
	/**
	 * 通过审查，等待区联社审批
	 */
	EXAMINE_SUCC_LIANSHE("EXAMINE_SUCC_LIANSHE", "审查成功，等待区联社审批"),
	/**
	 * 通过审查，等待个金审批
	 */
	EXAMINE_SUCC_GEJING("EXAMINE_SUCC_GEJING", "审查成功，等待个金部经理审批"),
	/**
	 * 审查失败，需要补件 
	 */
	EXAMINE_UPDATE("EXAMINE_UPDATE", "审查失败，需要补件"),
	/**
	 * 审查失败，退件
	 */
	EXAMINE_FAIL("EXAMINE_FAIL", "审查失败，退件"),
	/**
	 * 审批成功
	 */
	APPROVAL_SUCC_LIANSHE("APPROVAL_SUCC_LIANSHE", "已确认区联社审批成功"),
	/**
	 * 分配前确认已经收到纸质资料
	 */
	RECEIVED_FILES("RECEIVED_FILES", "联社收到资料，等待分配独立审查人"),
	/**
	 * 审批成功
	 */
	APPROVAL_SUCC_GEJING("APPROVAL_SUCC_GEJING", "已确认个金部经理审批成功"),
	/**
	 * 个金无权审查直接上报区联社
	 */
	CAN_NOT_EXAMINE("CAN_NOT_EXAMINE", "个金无权审查，由区联社审查并审批"),
	/**
	 * 审批失败，退件
	 */
	APPROVAL_FAIL_LIANSHE("APPROVAL_FAIL", "已确认区联社审批未通过"),
	/**
	 * 审批失败，退件
	 */
	APPROVAL_FAIL_GEJING("APPROVAL_FAIL_GEJING", "已确认个金部经理审批未通过");
	
	private String cnValue;
	private String value;
	
	private LoanStat(String value, String cnValue) {
		this.cnValue = cnValue;
		this.value = value;
	}
	
	/**
	 * 获取枚举对应的中文
	 * @return
	 */
	public String cnStr() {
		return cnValue;
	}
	
	/**
	 * 获取数据库存储值
	 * @return
	 */
	public String getValue() {
		return value;
	}
	
	/**
	 * 帮助类，用于反向查询
	 * @author ljx26_000
	 *
	 */
	public static class Helper{
		
		/**
		 * 根据英文状态获取中文转义
		 * @param value
		 * @return
		 */
		public static String findCnValue(String value) {
			for (LoanStat loanStat : LoanStat.values()) {
				if (loanStat.value.equals(value)) {
					return loanStat.cnValue;				
				}
			}
			
			return "";
		}
		
		/**
		 * 根据中文转义获取英文状态值
		 * @param cnValue
		 * @return
		 */
		public static String getFindEnValue(String cnValue) {
			for (LoanStat loanStat : LoanStat.values()) {
				if (loanStat.cnValue.equals(cnValue)) {
					return loanStat.value;				
				}
			}
			
			return "";
		}
	}
}


